<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>let 与 const</title>
</head>
<body>
    
</body>
<script>
    //es5  用var
    //var num = 10
    //var num = 20
    //console.log(num);

    //es 6 let 与 const
    //一、用let 去声明变量
    //1. let 不允许重复声明变量  var 可以
    //2. let 不允许声明提升  var 可以
    //3. let 声明支持代码块（作用域） var 不受限制
    //4. let 声明的变量不会挂载到顶层对象 var 会挂载到顶层对象

    // let num = 10
    // let num = 20

    // console.log(num);
    // let num = 2;

    //if(true){
    //    let num = 20;
    //}

    //console.log(window.num)

    //var num = 20

    //let num2 = 20

    //console.log(window.num);
    //console.log(window.num2);

    //二、const 声明变量
    //const 与 var
    //1. const 不允许重复声明变量  var 可以
    //2. const 不允许声明提升  var 可以
    //3. const 声明支持代码块（作用域） var 不受限制
    //4. const 声明的变量不会挂载到顶层对象 var 会挂载到顶层对象

    // const 与 let
    //1. let声明可以不赋值  const 声明必须赋值
    //2. let声明变量可以被更改  const 声明变量不能修改
    //3. const 声明对象不能修改，但是可以修改里面的键值对，属性

    //const obj = {
    //    a : 1
    //    b : 2
    //obj.a = 20
    //}

</script>
</html>